/*
题目描述
编写一个函数getbits，从一个32位的整数中取出某几位，即取出的这些位保留原值，其余位为0。
取出的位数定义为从右边数的第n1位到第n2位，请注意最右边的位是第0位。
函数的调用形式为getbits(value, n1, n2)。给定value、n1和n2，输出getbits的返回值的10进制表示。
请务必注意本题中的整数是32位无符号整数，输入和输出时可以使用%u进行处理。

输入
3个用空格隔开的整数value、n1和n2。其中value是正整数，n1和n2为非负整数。保证n1不大于n2，且均不大于30。

输出
getbits(value, n1, n2)的返回值的10进制表示。
请注意行尾输出换行。
*/
#include <stdio.h>
unsigned int getbits(unsigned int value, int n1, int n2)
{
    int mask, mask1 = 0, mask2 = 1;
    for (int i = 0; i < n1; i++)
    {
        mask1 = mask1 * 2 + 1;
    }
    for (int i = 0; i < n2; i++)
    {
        mask2 = mask2 * 2 + 1;
    }
    mask = mask2 & (~mask1);
    return value & mask;
}
int main()
{
    unsigned int value;
    int n1, n2;
    scanf("%u %d %d", &value, &n1, &n2);
    printf("%u", getbits(value, n1, n2));
}
